Skip to content

refactor(dispatch): install only published releases; flatten target setup - #1973

Merged
bobleer merged 1 commit into
GCWing:mainfrom
bobleer:bob/uix-form-bitfun-cli-c711eb
Aug 2, 2026
Merged

refactor(dispatch): install only published releases; flatten target setup#1973
bobleer merged 1 commit into
GCWing:mainfrom
bobleer:bob/uix-form-bitfun-cli-c711eb

Conversation

@bobleer

@bobleer bobleer commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator

Why

Two things, both about the dispatch target setup dialog.

1. Remove the ability to compile BitFun on the target. It required a Rust toolchain, a C compiler, git, ~6 GB of free space, and tens of minutes on a machine the user only meant to run one task on. It existed solely to paper over targets that no published binary fits; those targets are now reported as unusable instead.

2. The form was too deeply nested. Showing one project path meant passing through four levels of boxes: modal → section card with a filled header bar → inner card → code pill.

What changed

Only the published binary install path remains

Removed end to end, so the capability cannot come back through an unused door:

  • The dispatch_install_cli_source_start command, its Tauri adapter, the Server Host route, and the CLI/Desktop peer table entries
  • The Desktop controller-source archiver (archive_controller_source / controller_source_root)
  • install_cli_source_start, install_cli_source_archive_start, both remote build script generators, and source_build_availability
  • The probe's cargo / git / cc / free-space detection, the DispatchSourceBuild type, and the strings in all three locales

The probe now fills install_error in the two branches that previously returned nothing and leaned on the source-build card, so a target with no compatible release explains itself rather than failing later at submit. The UI gains an installUnavailable message and keeps "Use this target" disabled. A new contract test pins that no routing table or client API mentions dispatch_install_cli_source_start.

Flatten the setup form

The dialog loses the install poll/cancel and console machinery along with the source build — nothing in this dialog starts an install anymore; submit does.

What remains is one flat stack of sections separated by hairlines, with a border reserved for the two things that are actually interactive (the revision input and the approval options). The automatic-setup and model-sync panels fold into the target check they belong to, so five sections become three and the whole form fits without scrolling.

Verification

  • cargo check: bitfun-services-integrations / bitfun-core / bitfun-server / bitfun-cli / bitfun-desktop all pass; no new clippy warnings
  • Rust tests: dispatch_ssh 31, core dispatch 37, server route 3, CLI deny 1 — all green
  • web-ui: 2565 tests green, tsc and eslint clean
  • Rendered the old and new styles side by side to compare the actual layout

Note

installCliStart / installCliPoll / installCliCancel are kept in dispatchApi: their backend commands still exist and belong to the binary install path, they just have no frontend caller right now (installCliStart already had none before this change).

…etup

Compiling BitFun on someone else's machine is not something a dispatch
controller should be able to do. It needed a Rust toolchain, a C compiler,
git, ~6 GB of scratch space, and tens of minutes on a host the user only
meant to run one task on — and it existed solely to paper over targets no
published binary fits. Those targets are now reported as unusable instead.

The removal is end to end, so the capability cannot come back through an
unused door: the `dispatch_install_cli_source_start` command, its Tauri
adapter, the Server Host route, the Desktop controller-source archiver,
both remote build script generators, `source_build_availability`, and the
probe's cargo/git/cc/free-space detection are all gone. The probe now
fills `install_error` in the two branches that previously returned nothing
and leaned on the source-build card, so a target with no compatible
release explains itself rather than failing later at submit. A contract
test pins that no routing table or client API mentions the command.

The dialog loses the source build and, with it, the install poll/cancel
and console machinery — nothing in this dialog starts an install anymore;
submit does. What remains is a form that was four box levels deep for one
path: a modal, a section card with a filled header bar, an inner card, and
a `code` pill. It is now one flat stack separated by hairlines, with a
border reserved for the two things that are actually interactive (the
revision input and the approval options). The automatic-setup and
model-sync panels fold into the target check they belong to, so five
sections become three and the whole form fits without scrolling.
@bobleer
bobleer merged commit d17b6f4 into GCWing:main Aug 2, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant